package com.mspbots.common.utils;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * com.mspbots.web.utils.HttpRequestParamsUtils
 *
 * @author Alex bob(https://github.com/vnobo)
 * @date Created by 2019/8/26
 */
public class ClientUrlParamsUtils {
    /**
     * 设置map类型表单数据
     *
     * @param parmas 表单内容
     * @return this
     */
    public static MultiValueMap<String, String> form(Map<String, Object> parmas) {
        MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
        if (MapUtil.isNotEmpty(parmas)) {
            for (Map.Entry<String, Object> entry : parmas.entrySet()) {
                form(entry.getKey(), entry.getValue(), queryParams);
            }
        }
        return queryParams;
    }

    /**
     * 设置表单数据<br>
     *
     * @param name  名
     * @param value 值
     * @return this
     */
    public static void form(String name, Object value, MultiValueMap<String, String> queryParams) {
        if (StrUtil.isBlank(name) || ObjectUtil.isNull(value)) {
            // 忽略非法的form表单项内容;
            return;
        }

        List<String> strValue = new ArrayList<>();
        if (value instanceof List) {
            for (Object o : (List) value) {
                // 列表对象
                strValue.add(Convert.toStr(o, null));
            }
        } else {
            // 其他对象一律转换为字符串
            strValue.add(Convert.toStr(value, null));
        }
        queryParams.put(name, strValue);
    }
}
